<?xml version='1.0'?>
<!--=======================================================================
	Copyright:	umlungu consulting (pty) ltd
	Author:		Alan Benington
	Started:	2008-06-14
	Status:		release	
	Version:	2.0.0
	Build:		20080614
	License:	GNU General Public License
	======================================================================= -->

<!--=======================================================================
	Development Notes:
	==================
	20080614:	Initial release.
	=======================================================================	-->

<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>

<!--===============================
	global parameters and variables
	=============================== -->
	<xsl:variable name="x_img_root">images/</xsl:variable>
	<xsl:param name="x_user">alanben</xsl:param>
	<xsl:param name="base_comment">commentx.aspx?name=</xsl:param>
	<xsl:param name="base_contact">contactx.aspx?name=</xsl:param>
	<xsl:param name="archive"/>
	<xsl:param name="space"/>
	<xsl:param name="archives"/>

<!--=======================
	Match templates section
	======================= -->
	<!-- Old version template when blog text in a 'text' element-->
	<xsl:template match="blog/text">
		<xsl:choose>
			<xsl:when test="html or @html='no' or @type='text'">
				<xsl:apply-templates/>
			</xsl:when>
			<xsl:otherwise><xsl:copy-of select="*" /></xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template match="blog/blogtext">
		<div class="paranorm"><xsl:apply-templates/></div>
	</xsl:template>
	
	<xsl:template match="blog/bloghtml">
		<xsl:copy-of select="text() | *"/>
	</xsl:template>
	
<!--=======================
	Named templates section
	======================= -->
	<xsl:template name="HtmlHead">
		<head>
			<title><xsl:value-of select="//blogspace/title"/></title>
			<meta name="keywords">
				<xsl:attribute name="content"><xsl:value-of select="//blogspace/text"/></xsl:attribute>
			</meta>
			<meta name="description">
				<xsl:attribute name="content"><xsl:value-of select="//blogspace/blog/title"/></xsl:attribute>
			</meta>
			<link rel="stylesheet" type="text/css">
				<xsl:attribute name="href">
					<xsl:text>styles/</xsl:text>
					<xsl:value-of select="//blogspace/@name"/><xsl:text>/</xsl:text>
					<xsl:value-of select="//blogspace/@name"/><xsl:text>.css</xsl:text>
				</xsl:attribute>
			</link>
			<script type="text/javascript" src="scripts/blogx.js"/>
			<script type="text/javascript">
				<xsl:attribute name="src">
					<xsl:text>scripts/</xsl:text>
					<xsl:value-of select="$name"/><xsl:text>/</xsl:text>
					<xsl:value-of select="$name"/><xsl:text>.js</xsl:text>
				</xsl:attribute>
			</script>
		</head>
	</xsl:template>

	<xsl:template name="TopicLinks">
		<h3><span class="mdblue">Topics</span>
			<xsl:for-each select="//blogspace/topics/topic">
				<xsl:sort select="text()" order="descending" />
				<br/><a><xsl:attribute name="href">
							<xsl:text>blogx</xsl:text><xsl:value-of select="$base"/><xsl:value-of select="$name"/><xsl:text>&amp;topic=</xsl:text><xsl:value-of select="@name"/>
						</xsl:attribute>
					  	<xsl:value-of select="text()"/>
					</a><xsl:call-template name="nobrspace"/>
					<span class="mdblue">
						<xsl:text>[</xsl:text>
						<xsl:choose>
							<xsl:when test="@count"><xsl:value-of select="@count"/></xsl:when>
							<xsl:otherwise><xsl:text>-</xsl:text></xsl:otherwise>
						</xsl:choose>
						<xsl:text>]</xsl:text>
					</span>
			</xsl:for-each>
		</h3>
	</xsl:template>

	<xsl:template name="LastLinks">
		<xsl:param name="recent"/>
		<p><span class="mdblue">Last 3 articles</span>
			<xsl:for-each select="//blogs/recent/blog[position() &lt;= $recent]">
				<xsl:sort select="@date" order="descending" />
				<xsl:call-template name="BlogLink"/>
			</xsl:for-each>
		</p>
	</xsl:template>

	<xsl:template name="CommentLinks">
		<xsl:param name="top"/>
		<p><span class="mdblue">Most commented</span>
			<xsl:for-each select="//blogs/comment/blog[position() &lt;= $top]">
				<xsl:sort select="@comments" order="descending" />
				<xsl:call-template name="BlogLink"/>
			</xsl:for-each>
		</p>
	</xsl:template>

	<xsl:template name="WebLinks">
		<script language="JavaScript" type="text/javascript">
			function _External(ul) { _name = "xThoughts"; _pop(ul,false); }
			function _pop(url, set, scr, wid, hgt, mnu) {
				var setting = "";
				if (set) {
					var mn = (mnu)? "yes" : "no";
					var sc = (scr)? "yes" : "no";
					var wd = (wid)? wid : "463";
					var ht = (hgt)? hgt : "400";
					setting = "toolbar=no,location=no,status=no,menubar="+mn+",scrollbars="+sc+",width="+wd+",height="+ht+",noresize";
				}
				this.popwin = window.open(url,_name, setting);
				try { this.popwin.focus(); }
				catch (e) { this.popwin.focus(); }
			}
		</script>
		<p><span class="mdblue">Recommended links</span>
			<xsl:for-each select="//links/link"><xsl:call-template name="WebLink"/></xsl:for-each>
		</p>
	</xsl:template>

	<xsl:template name="WebLink">
	    <br/>
			<a><xsl:attribute name="href">
					<xsl:text>javascript:_External('</xsl:text>
					<xsl:value-of select="@url"/>
					<xsl:text>')</xsl:text>
				</xsl:attribute>
				<xsl:value-of select="."/>
			</a>
		<xsl:text> - </xsl:text>
	</xsl:template>

	<xsl:template name="ArchiveLink">
	<!-- Remove untill archiving sorted...
		<p><a>
			<xsl:attribute name="href"><xsl:value-of select="$base"/><xsl:value-of select="$name"/>&amp;page=archives</xsl:attribute>
			<xsl:text>Full Archive</xsl:text>
		</a></p>
	-->
	</xsl:template>

	<!-- utility templates : context node is like: 
		<blog date="2004-04-19T14:42:31" id="3" topic="herbal" author="beryl" initials="BS">Can this be a test of long</blog>
	 -->	
	<xsl:template name="BlogLink">
		<xsl:variable name="thistopic">
			<xsl:choose>
				<xsl:when test="@topic"><xsl:value-of select="@topic"/></xsl:when>
				<xsl:otherwise><xsl:value-of select="$topic"/></xsl:otherwise>
			</xsl:choose>
		</xsl:variable>
	    <br/><a><xsl:attribute name="href">
					<xsl:value-of select="$name"/><xsl:value-of select="$base"/><xsl:value-of select="$name"/>
					&amp;topic=<xsl:value-of select="$thistopic"/>
					&amp;id=<xsl:value-of select="@id"/>
					&amp;page=comments
				</xsl:attribute>
			<xsl:call-template name="BlogTitle"><xsl:with-param name="length">20</xsl:with-param></xsl:call-template>
			<span class="smaller">
				<xsl:text> |</xsl:text>
				<xsl:call-template name="BlogAuthor"><xsl:with-param name="initials">yes</xsl:with-param></xsl:call-template>
				<xsl:text>| </xsl:text>
				<xsl:call-template name="BlogDate"><xsl:with-param name="format">dd-mmm</xsl:with-param></xsl:call-template>
			</span></a>
		<xsl:text> - </xsl:text>
	</xsl:template>
	
	<xsl:template name="BlogTitle">
		<xsl:param name="length"></xsl:param>
		<xsl:choose>
			<xsl:when test="$length=''"><xsl:value-of select="."/></xsl:when>
			<xsl:otherwise>
				<xsl:variable name="abbrev" select="substring(., 1, $length)"/>
				<xsl:value-of select="$abbrev"/>
				<xsl:if test="string-length($abbrev) = $length"><xsl:text> ...</xsl:text></xsl:if>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template name="BlogAuthor">
		<xsl:param name="initials"/>
		<xsl:choose>
			<xsl:when test="$initials='yes'"><xsl:value-of select="@initials"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:choose>
					<xsl:when test="@author != ''"><xsl:value-of select="@author"/></xsl:when>
					<xsl:when test="author">
						<xsl:variable name="thisauth" select="author"/>
						<xsl:value-of select="//users/user[text() = $thisauth]/@name"/>
					</xsl:when>
					<xsl:otherwise></xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template name="BlogDate">
		<xsl:param name="format">none</xsl:param>
		<xsl:variable name="yyyy-mm-dd" select="substring-before(@date, 'T')"/>
		<xsl:variable name="yyyy" select="substring-before($yyyy-mm-dd, '-')"/>
		<xsl:variable name="mm-dd" select="substring-after($yyyy-mm-dd, '-')"/>
		<xsl:variable name="mm" select="substring-before($mm-dd, '-')"/>
		<xsl:variable name="dd" select="substring-after($mm-dd, '-')"/>
		<xsl:choose>
			<xsl:when test="$format='yyyy-mm-dd'"><xsl:value-of select="$yyyy-mm-dd"/></xsl:when>
			<xsl:when test="$format='mm-dd'"><xsl:value-of select="$mm-dd"/></xsl:when>
			<xsl:when test="$format='mm'"><xsl:value-of select="$mm"/></xsl:when>
			<xsl:when test="$format='dd'"><xsl:value-of select="$dd"/></xsl:when>
			<xsl:when test="$format='dd-mmm'">
				<xsl:value-of select="$dd"/>
				<xsl:text>-</xsl:text>
				<xsl:call-template name="BlogMonth">
					<xsl:with-param name="format">mmm</xsl:with-param>
					<xsl:with-param name="month" select="$mm"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:when test="$format='mmmm yyyy'">
				<xsl:call-template name="BlogMonth">
					<xsl:with-param name="month" select="$mm"/>
				</xsl:call-template>
				<xsl:text> </xsl:text>
				<xsl:value-of select="$yyyy"/>
			</xsl:when>
			<xsl:otherwise><xsl:value-of select="@date"/></xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template name="BlogMonth">
		<xsl:param name="format">none</xsl:param>
		<xsl:param name="month">00</xsl:param>
		<xsl:choose>
			<xsl:when test="$format = 'mmm'">
				<xsl:choose>
					<xsl:when test="$month='01'">Jan</xsl:when>
					<xsl:when test="$month='02'">Feb</xsl:when>
					<xsl:when test="$month='03'">Mar</xsl:when>
					<xsl:when test="$month='04'">Apr</xsl:when>
					<xsl:when test="$month='05'">May</xsl:when>
					<xsl:when test="$month='06'">Jun</xsl:when>
					<xsl:when test="$month='07'">Jul</xsl:when>
					<xsl:when test="$month='08'">Aug</xsl:when>
					<xsl:when test="$month='09'">Sep</xsl:when>
					<xsl:when test="$month='10'">Oct</xsl:when>
					<xsl:when test="$month='11'">Nov</xsl:when>
					<xsl:when test="$month='12'">Dec</xsl:when>
					<xsl:otherwise>Mmm</xsl:otherwise>
				</xsl:choose>
			</xsl:when>
			<xsl:otherwise>
				<xsl:choose>
					<xsl:when test="$month='01'">January</xsl:when>
					<xsl:when test="$month='02'">Febuary</xsl:when>
					<xsl:when test="$month='03'">March</xsl:when>
					<xsl:when test="$month='04'">April</xsl:when>
					<xsl:when test="$month='05'">May</xsl:when>
					<xsl:when test="$month='06'">June</xsl:when>
					<xsl:when test="$month='07'">July</xsl:when>
					<xsl:when test="$month='08'">August</xsl:when>
					<xsl:when test="$month='09'">September</xsl:when>
					<xsl:when test="$month='10'">October</xsl:when>
					<xsl:when test="$month='11'">November</xsl:when>
					<xsl:when test="$month='12'">December</xsl:when>
					<xsl:otherwise>Month</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>
		
	</xsl:template>

<!--=========================
	Utility templates section
	========================= -->
	<xsl:template match="html">
		<xsl:copy-of select="."/>
	</xsl:template>
	
	<xsl:template match="br">
		<xsl:copy-of select="."/>
	</xsl:template>
	
	<xsl:template name='nobrspace'>
		<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
	</xsl:template>

	<xsl:template match="bold">
		<b><xsl:apply-templates/></b>
	</xsl:template>
	
</xsl:stylesheet>
